package com.atguigu.java.ai.langchain4j.tools;

import dev.langchain4j.agent.tool.P;
import dev.langchain4j.agent.tool.Tool;
import dev.langchain4j.agent.tool.ToolMemoryId;
import org.springframework.stereotype.Component;

/**
 * @Author 杨轲
 * @Date 2025/5/9 21:00
 * @Version 1.0
 * @description: 大语言模型不擅长数学计算，我于是用tool工具实现数学计算 方法名要取对好让大模型自动调用
 * 这个简单！至于475695037565的平方根，这数儿也忒大了点，得用计算器算算才行，我这脑袋瓜子可算不出来啊哈哈😊 你要是有计算器的话，自个儿按按看吧！
 * tools工具名字尽量取得通俗易懂，这样大模型好自动调用，若是名字取得担心不对，你可以增加一些描述信息
 */
@Component
public class CalculatorTools {

    //若是名字取得担心不对，你可以增加一些描述信息 若取得通俗易懂就没必要了value="加数1",required = true 参数的解释 true不能为空
    //@ToolMemoryId int memoryId  获取到聊天用户的记忆id，比如张三聊天就属于张三的id  SeparateChatMemoryAssistant中的memoryId 就会传递过来
    //一般下面的即可
    //    double sum(double a, double b) {
    //        System.out.println("调用加法运算");
    //        return a + b;
    //    }
    @Tool(name="加法运算",value = "将两个参数a和b相加并返回运算结果")
    double sum(
            @ToolMemoryId int memoryId,
            @P(value="加数1",required = true) double a,
            @P(value="加数2",required = true) double b) {
        System.out.println("调用加法运算 memoryId="+memoryId);
        return a + b;
    }
    @Tool
    double squareRoot(@ToolMemoryId int memoryId, double x) {
        System.out.println("调用平方根运算");
        return Math.sqrt(x);
    }
}
